import pandas as pd
from datetime import datetime

def main():
    # 1. 读取并打印student.xlsx内容
    try:
        # 读取Excel文件
        df = pd.read_excel('student.xlsx')
        print("="*60)
        print("1. student.xlsx文件内容：")
        print(df.to_string(index=False))  # 不显示行索引
        print("="*60 + "\n")

        # 2. 按性别统计
        if '性别' in df.columns:
            gender_counts = df['性别'].value_counts(dropna=True).sort_index()
            print("2. 性别统计结果：")
            for gender, count in gender_counts.items():
                print(f"{gender}：{count}人")
        else:
            print("2. 数据中未找到'性别'列")
        print("="*60 + "\n")

        # 3. 按年龄段统计
        if '出生日期' in df.columns:
            # 计算年龄（精确到日）
            today = datetime.today()
            df['年龄'] = df['出生日期'].apply(
                lambda x: today.year - x.year - ((today.month, today.day) < (x.month, x.day)) 
                if pd.notnull(x) else None
            )
            
            # 定义年龄段（可根据实际数据调整）
            bins = [0, 17, 22, 25, 100]
            labels = ['17岁及以下', '18-22岁', '23-25岁', '26岁及以上']
            df['年龄段'] = pd.cut(df['年龄'], bins=bins, labels=labels, right=False)
            
            age_counts = df['年龄段'].value_counts(dropna=True).reindex(labels, fill_value=0)
            print("3. 年龄段统计结果：")
            for age_group, count in age_counts.items():
                print(f"{age_group}：{count}人")
        else:
            print("3. 数据中未找到'出生日期'列")
        print("="*60 + "\n")

        # 4. 按地区统计（外省按省份，海南按市县）
        if '地区' in df.columns:
            region_counts = {}
            for region in df['地区'].dropna():
                region_str = str(region).strip()
                
                if region_str.startswith(('海南', '海南省')):
                    # 提取海南的市县（处理多种格式）
                    if '-' in region_str:
                        city = region_str.split('-', 1)[1].strip()
                    else:
                        city = region_str.replace('海南', '').replace('省', '').strip()
                    region_key = city if city else '海南其他'
                else:
                    # 提取外省的省份
                    province = region_str.split('-', 1)[0].strip()
                    # 去除省份后缀
                    for suffix in ['省', '市', '自治区', '回族自治区', '维吾尔自治区']:
                        if province.endswith(suffix):
                            province = province[:-len(suffix)]
                            break
                    region_key = province if province else '其他省份'
                
                region_counts[region_key] = region_counts.get(region_key, 0) + 1
            
            print("4. 地区统计结果：")
            for region in sorted(region_counts.keys()):
                print(f"{region}：{region_counts[region]}人")
        else:
            print("4. 数据中未找到'地区'列")
        print("="*60)

    except FileNotFoundError:
        print("错误：未找到student.xlsx文件，请确保文件在当前目录下")
    except Exception as e:
        print(f"处理过程中发生错误：{str(e)}")

if __name__ == "__main__":
    main()